﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace projetoFinal.pages.administracao.usuarios
{
    public partial class dados : baseWebPage
    {
        protected void Page_Init(object sender, EventArgs e)
        {
            base.Modulo = operaModulo.buscar("ADMINISTRAÇÃO - USUÁRIO");
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                //Arruma o diretório das imagens
                menuTopo.setDiretorio("../");
                menuEsquerda.setDiretorio("../");

                lblTitulo.Text = "Usuários";
                btnSalvar.Attributes.Add("onclick", "javascript:return validateForm('frmDados');");

                Int64 id = 0;
                if (Request["id"] != null)
                {
                    id = Int64.Parse(Request["id"].ToString());
                    projetoFinal.usuario t = operaUsuario.buscar(id);
                    //Busca os dados e preenche conforme o que está no banco
                    txtCodigo.Value = t.CodUsuario.ToString();
                    txtNome.Value = t.Nome.ToString();
                    txtLogin.Value = t.Login.ToString();
                    txtSenha.Value = "";
                    txtEmail.Value = t.Email.ToString();
                    txtFuncao.Value = t.Funcao.ToString();
                    radStatusAtivo.Checked = t.Status == status.ativo ? true : false;
                    radStatusInativo.Checked = t.Status == status.ativo ? false : true;

                    bindNivelAcesso(t.NivelAcesso.CodNivelAcesso);
                    if (t.Seguradora != null)
                    {
                        radSeguradora.Checked = true;
                        selPrestador.Style.Add("display", "none");
                        selSeguradora.Style.Add("display", "");
                        bindSeguradora(t.Seguradora.CodCadastro);
                    }
                    else
                    {
                        bindSeguradora(0);
                    }
                    if (t.Prestador != null)
                    {
                        radPrestador.Checked = true;
                        selSeguradora.Style.Add("display", "none");
                        selPrestador.Style.Add("display", "");
                        bindPrestadora(t.Prestador.CodCadastro);
                    }
                    else
                    {
                        bindPrestadora(0);
                    }

                    btnSalvar.Attributes.Remove("onclick");
                    btnSalvar.Attributes.Add("onclick", "javascript:validaSenhaEdicao(); return validateForm('frmDados');");

                    //No caso de edição
                    if (!base.CanUpdate)
                    {
                        this.btnSalvar.Visible = false;
                        this.information.Visible = true;
                        this.lblTitleInformation.Text = "Aviso!";
                        this.lblMessageInformation.Text = "Você não possui permissão para editar registros!";
                    }
                }
                else
                {
                    //Deixa a senha obrigatória somente na inclusão do usuário
                    txtSenha.Attributes.Add("validate", "true");
                    txtSenha.Attributes.Add("mensagem", "Senha em branco");
                    //Deixa obrigatório o preenchimento da confirmação de senha
                    txtSenhaConfirmacao.Attributes.Add("validate", "true");

                    bindNivelAcesso(0);
                    bindSeguradora(0);
                    bindPrestadora(0);

                    //No caso de inclusão
                    if (!base.CanCreate)
                    {
                        this.btnSalvar.Visible = false;
                        this.information.Visible = true;
                        this.lblTitleInformation.Text = "Aviso!";
                        this.lblMessageInformation.Text = "Você não possui permissão para incluir registros!";
                    }
                }
            }
        }
        private void bindNivelAcesso(Int64 codNivelAcesso)
        {
            selNivelAcesso.DataSource = operaNivelAcesso.listar("", "", 0);
            selNivelAcesso.DataTextField = "Descr";
            selNivelAcesso.DataValueField = "CodNivelAcesso";
            selNivelAcesso.DataBind();

            selNivelAcesso.Items.Insert(0, new ListItem("Selecione...", ""));
            if (codNivelAcesso != 0)
            {
                selNivelAcesso.Items.FindByValue(codNivelAcesso.ToString()).Selected = true;
            }
        }
        private void bindSeguradora(Int64 codCadastro)
        {
            selSeguradora.DataSource = operaSeguradora.listar("", "", 0);
            selSeguradora.DataTextField = "nome";
            selSeguradora.DataValueField = "codCadastro";
            selSeguradora.DataBind();

            selSeguradora.Items.Insert(0, new ListItem("Selecione...", ""));
            if (codCadastro != 0)
            {
                selSeguradora.Items.FindByValue(codCadastro.ToString()).Selected = true;
            }
        }
        private void bindPrestadora(Int64 codCadastro)
        {
            selPrestador.DataSource = operaPrestadorServico.listar("", "", 0);
            selPrestador.DataTextField = "nome";
            selPrestador.DataValueField = "codCadastro";
            selPrestador.DataBind();

            selPrestador.Items.Insert(0, new ListItem("Selecione...", ""));
            if (codCadastro != 0)
            {
                selPrestador.Items.FindByValue(codCadastro.ToString()).Selected = true;
            }
            
        }
        protected void btnSalvar_Click(object sender, EventArgs e)
        {
            projetoFinal.usuario t = null;
            if (Request["id"] != null)
            {
                projetoFinal.nivelAcesso objNivelAcesso = operaNivelAcesso.buscar(Int64.Parse(selNivelAcesso.Items[selNivelAcesso.SelectedIndex].Value));
                projetoFinal.seguradora objSeguradora = null;
                projetoFinal.prestadorServico objPrestadora = null;
                status s = radStatusAtivo.Checked ? status.ativo : status.inativo;
                if (radSeguradora.Checked)
                {
                    if (selSeguradora.SelectedIndex != 0)
                    {
                        objSeguradora = operaSeguradora.buscar(Int64.Parse(selSeguradora.Items[selSeguradora.SelectedIndex].Value));
                    }
                }
                if (radPrestador.Checked)
                {
                    if (selPrestador.SelectedIndex != 0)
                    {
                        objPrestadora = operaPrestadorServico.buscar(Int64.Parse(selPrestador.Items[selPrestador.SelectedIndex].Value));
                    }
                }

                t = operaUsuario.buscar(Int64.Parse(Request["id"].ToString()));
                t.Nome = txtNome.Value;
                t.Login = txtLogin.Value;
                if (txtSenha.Value != "")
                {
                    t.Senha = txtSenha.Value;
                }
                t.Email = txtEmail.Value;
                t.Funcao = txtFuncao.Value;
                t.NivelAcesso = objNivelAcesso;
                t.Seguradora = objSeguradora;
                t.Prestador = objPrestadora;
                t.Status = s;

                //Edição
                int cont = operaUsuario.editar(t);
                if (cont > 0)
                {
                    Response.Redirect("listagem.aspx?msg=1", false);
                }
                else
                {
                    Response.Redirect("listagem.aspx?msg=2", false);
                }
            }
            else
            {
                projetoFinal.nivelAcesso objNivelAcesso = operaNivelAcesso.buscar(Int64.Parse(selNivelAcesso.Items[selNivelAcesso.SelectedIndex].Value));
                projetoFinal.seguradora objSeguradora = null;
                projetoFinal.prestadorServico objPrestadora = null;
                status s = radStatusAtivo.Checked ? status.ativo : status.inativo;
                if (radSeguradora.Checked)
                {
                    if (selSeguradora.SelectedIndex != 0)
                    {
                        objSeguradora = operaSeguradora.buscar(Int64.Parse(selSeguradora.Items[selSeguradora.SelectedIndex].Value));
                    }
                }
                if (radPrestador.Checked)
                {
                    if (selPrestador.SelectedIndex != 0)
                    {
                        objPrestadora = operaPrestadorServico.buscar(Int64.Parse(selPrestador.Items[selPrestador.SelectedIndex].Value));
                    }
                }

                t = new projetoFinal.usuario(0, txtNome.Value, txtLogin.Value, txtSenha.Value, objNivelAcesso, objSeguradora, objPrestadora, txtEmail.Value, txtFuncao.Value, s);
                //Inclusão
                int cont = operaUsuario.incluir(t);
                if (cont > 0)
                {
                    Response.Redirect("listagem.aspx?msg=3", false);
                }
                else
                {
                    Response.Redirect("listagem.aspx?msg=4", false);
                }
            }
        }
    }
}
